package main

import (
	"bufio"
	"fmt"
	"log"
	"math/rand"
	"os"
	"strconv"
	"strings"
)

func main() {
	//为了使目标数生效，需要种子器重置随机
	//seconds := time.Now().Unix() //用时间戳当做种子新值
	//rand.NewSource(seconds)      //重置激活rand,否则随机值永远为同一个值
	fmt.Println("猜数字游戏即将开始，请输入数字")
	var isWin bool
	targetNum := rand.Intn(100) + 1
	reader := bufio.NewReader(os.Stdin)

	for i := 0; i < 10; i++ {
		//go语言中方法可以返回多个值，这点跟别的编程语言差别很大
		//注意(1) 这里err声明
		input, err := reader.ReadString(byte('\n'))
		//如果不想处理error 可以用 _ 代替
		if err != nil {
			fmt.Println("数字读取异常,错误为:", err)
			log.Fatal(err) //报告错误并停止运行
		}
		//注意(2)这里err不会重复声明，而是直接赋值
		userGuess, err := strconv.Atoi(strings.Trim(input, "\n"))
		if err != nil {
			println("字符串转int失败")
			log.Fatal(err) //报告错误并停止运行
		}
		if userGuess == targetNum {
			isWin = true
			break
		} else if userGuess < targetNum {
			println("你猜小了，请继续")
		} else if userGuess > targetNum {
			println("你猜大了,请继续")
		}
	}
	if isWin {
		fmt.Println("恭喜你答对了，本场游戏结束")
	} else {
		fmt.Println("很遗憾，10次没有猜中游戏结束")
	}

}
